unit RelResumoContabil;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UrelatorioBase, RLPDFFilter, RLXLSFilter, RLFilters, DBCLient,
  RLHTMLFilter, RLDraftFilter, DB, DBTables, RLReport, StdCtrls, ExtCtrls,
  Buttons, ComCtrls, RLParser, DBCtrls;

type
  TFRelResumoContabil = class(TFrelatorioBase)
    Label3: TLabel;
    edCompetencia: TDateTimePicker;
    RLBand2: TRLBand;
    RLBand3: TRLBand;
    RLLabel1: TRLLabel;
    RLLabel2: TRLLabel;
    RLLabel3: TRLLabel;
    RLLabel4: TRLLabel;
    RLLabel5: TRLLabel;
    RLLabel6: TRLLabel;
    RLLabel7: TRLLabel;
    RLLabel8: TRLLabel;
    RLDBText2: TRLDBText;
    RLDBText3: TRLDBText;
    RLDBText4: TRLDBText;
    RLDBText5: TRLDBText;
    RLDBText6: TRLDBText;
    RLDBText7: TRLDBText;
    RLDBText8: TRLDBText;
    RLDBText9: TRLDBText;
    ProgressBar: TProgressBar;
    RLBand4: TRLBand;
    RLDBResult1: TRLDBResult;
    RLExpressionParser1: TRLExpressionParser;
    RLDBResult2: TRLDBResult;
    RLDBResult3: TRLDBResult;
    RLDBResult4: TRLDBResult;
    RLDBResult5: TRLDBResult;
    RLDBResult6: TRLDBResult;
    DBLCBLocal: TDBLookupComboBox;
    Label4: TLabel;
    DSLocal: TDataSource;
    procedure btnPesquisarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnExecutarClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RLDBText9BeforePrint(Sender: TObject; var Text: String;
      var PrintIt: Boolean);
    procedure DBLCBLocalKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Carregar_CDS;
    procedure posicionar_cds(conta1,conta2:string);
  end;

var
  FRelResumoContabil: TFRelResumoContabil;
  cdsTemp : TClientDataSet;

implementation

uses UGeral;

{$R *.dfm}

procedure TFRelResumoContabil.btnPesquisarClick(Sender: TObject);
const
  ctPesquisa =
    'SELECT'#10+
    '  COALESCE(ITENSMOVIMENTOESTOQUE.ITENSMOVEST_QUANTIDADE * ITENSMOVIMENTOESTOQUE.ITENSMOVEST_VALORC,0) AS VALOR,'#10+
    '  MOVIMENTOESTOQUE.MOVEST_DATALANCAMENTO,'#10+
    '  MOVIMENTOESTOQUE.MOVEST_OBS AS HISTORICO_1,'#10+
    '  CCON.PLANOCONT_CODIGOCONTABIL AS CC_CONSUMO,'#10+
    '  CEST.PLANOCONT_CODIGOCONTABIL AS CC_ESTOQUE,'#10+
    '  CEST.PLANOCONT_DESCRICAO AS CC_ESTOQUE_DESC,'#10+
    '  TIPOMOVIMENTOESTOQUE.TIPMOVEST_DESCRICAO,'#10+
    '  TIPOMOVIMENTOESTOQUE.TIPMOVEST_ENTRADASAIDA'#10+
    'FROM'#10+
    '  MOVIMENTOESTOQUE'#10+
    '  INNER JOIN ITENSMOVIMENTOESTOQUE ON (MOVIMENTOESTOQUE.MOVEST_CODIGO = ITENSMOVIMENTOESTOQUE.ITENSMOVEST_MOVIMENTOESTOQUE)'#10+
    '  LEFT JOIN TIPOMOVIMENTOESTOQUE ON (MOVIMENTOESTOQUE.MOVEST_TIPOMOVIMENTO = TIPOMOVIMENTOESTOQUE.TIPMOVEST_CODIGO)'#10+
    //'                                 AND (TIPOMOVIMENTOESTOQUE.TIPOMOVEST_INTEGRACAO = ''M'')'#10+ // Movimento Estoque
    '  INNER JOIN PRODUTO ON (ITENSMOVIMENTOESTOQUE.ITENSMOVEST_PRODUTO = PRODUTO.PROD_CODIGO)'#10+
    '  LEFT JOIN CLASSIFICACAOPRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CCON ON (CCON.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_REC)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CEST ON (CEST.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_EST)'#10+
    'WHERE'#10+
    ' ((MOVIMENTOESTOQUE.excluido <> ''S'') or (MOVIMENTOESTOQUE.excluido is null)) AND'#10+
//    '  (MOVIMENTOESTOQUE.MOVEST_LOTE_ATUALIZADO = ''S'') AND '#10+ //AND (ITENSMOVIMENTOESTOQUE.ITENSMOVEST_PRODUTO = 35)
    '  (MOVIMENTOESTOQUE.MOVEST_DATALANCAMENTO >= %s) AND (MOVIMENTOESTOQUE.MOVEST_DATALANCAMENTO <= %s)'#10+
    'ORDER BY'#10+
    '  CCON.PLANOCONT_CODIGOCONTABIL,'#10+
    '  CEST.PLANOCONT_CODIGOCONTABIL';

  ctConsultaSaldo =
    'SELECT'#10+
    '  SUM(resumosaldoestoque.resu_custo_medio_unitario * resumosaldoestoque.resu_saldo)'#10+
    'FROM'#10+
    '  RESUMOSALDOESTOQUE'#10+
    '  INNER JOIN PRODUTO ON (RESUMOSALDOESTOQUE.RESU_PRODUTO  = PRODUTO.PROD_CODIGO)'#10+
    '  LEFT JOIN CLASSIFICACAOPRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CCON ON (CCON.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_REC)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CEST ON (CEST.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_EST)'#10+
    'WHERE'#10+
    '  (RESU_MES_FECHAMENTO   = %s) AND'#10+
    '  (RESU_ANO_FECHAMENTO   = %s) AND'#10+
    '  ((CCON.PLANOCONT_CODIGOCONTABIL = %s)AND'#10+
    '  (CEST.PLANOCONT_CODIGOCONTABIL = %s)) %s';

var
  nf, serie, conta1, conta2, hist1, hist2 : variant;
  ProxConta1, ProxConta2 : variant;
  valorE, valorS, valor_SaldoAnt, valor_saldoEst  : real;
  Arq : TextFile;
  chave, chave2,LOCAL_ESTOQUE : string;
  i, contMes, Y, M, D, Y_ant, M_ant : integer;

begin

  cdsTemp.EmptyDataSet;

  Carregar_CDS;

  cdsTemp.RecordCount;

  M := StrToInt(FormatDateTime('mm',   edCompetencia.DateTime));
  Y := StrToInt(FormatDateTime('yyyy', edCompetencia.DateTime));
  D := MonthDays[IsLeapYear(Y), M];// Ultimo Dia

  M_ant := M -1;
  Y_ant := Y;

  if M_ant < 1 then
  begin
    M_ant := 12;
    Y_ant := Y -1;
  end;

  valorE := 0;
  valorS := 0;
  valor_SaldoAnt := 0;
  valor_saldoEst := 0;

  if Usando_Query_Pesquisa(Format(ctPesquisa, [QuotedStr(FormatDateTime('mm/01/yyyy 00:00:00', edCompetencia.DateTime)),
                                               QuotedStr(FormatDateTime('mm/'+ IntToStr(Integer(MonthDays[IsLeapYear(Y), M])) +'/yyyy 23:59:59', edCompetencia.DateTime))])) then
  begin

    Query_Pesquisa.First;

    ProgressBar.Max      := Query_Pesquisa.RecordCount;
    ProgressBar.Position := 0;

    while not(Query_Pesquisa.Eof) do
    begin

      conta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
      conta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);


      if Query_Pesquisa.FieldByName('TIPMOVEST_ENTRADASAIDA').AsString = 'Saida' then
      begin
        valorS := valorS + Query_Pesquisa.FieldByName('VALOR').AsFloat;
        //conta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
        //conta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);
      end else begin
        valorE := valorE + Query_Pesquisa.FieldByName('VALOR').AsFloat;
        //conta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);
        //conta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
      end;

      chave  := conta1 + conta2;

      //valorT := valorT + Query_Pesquisa.FieldByName('VALOR').AsFloat;
      hist1  := copy( Trim(Query_Pesquisa.FieldByName('TIPMOVEST_DESCRICAO').AsString) + Space2(40), 1, 40);

      ProgressBar.StepBy(1);
      Query_Pesquisa.Next;

      ProxConta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
      ProxConta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);

      LOCAL_ESTOQUE:='AND (RESU_GERAL_LOCAL = 0 )';

     if DBLCBLocal.Text <> '' then
        LOCAL_ESTOQUE:= 'AND (RESU_GERAL_LOCAL = ' + VarToStr(DBLCBLocal.KeyValue) + ') ';


      chave2 := ProxConta1 + ProxConta2;

      if  Query_Pesquisa.eof then
       chave2:='666';

      // Fim -

      if chave <> chave2 then
      begin

          if Usando_Query_Pesquisa2(Format(ctConsultaSaldo, [QuotedStr(FormatFloat('00',M_ant)),
                                                             QuotedStr(IntToStr(Y_ant)),
                                                             conta1,
                                                             conta2,LOCAL_ESTOQUE])) then
            valor_SaldoAnt := Query_Pesquisa2.Fields[0].AsFloat;

          if Usando_Query_Pesquisa2(Format(ctConsultaSaldo, [QuotedStr(FormatFloat('00',M)),
                                                             QuotedStr(IntToStr(Y)),
                                                             conta1,
                                                             conta2,LOCAL_ESTOQUE])) then
            valor_SaldoEst := Query_Pesquisa2.Fields[0].AsFloat;

          posicionar_cds(conta1,conta2);

          cdsTemp.FieldByName('CONTA1').AsString    := conta1;
          cdsTemp.FieldByName('CONTA2').AsString    := conta2;
          cdsTemp.FieldByName('CONTADESC').AsString := Query_Pesquisa.FieldByName('CC_ESTOQUE_DESC').AsString;
          cdsTemp.FieldByName('SALDOANT').AsFloat   := valor_SaldoAnt;
          cdsTemp.FieldByName('VALORS').AsFloat     := valorS;
          cdsTemp.FieldByName('VALORE').AsFloat     := valorE;
          cdsTemp.FieldByName('SALDOCAL').AsFloat   := cdsTemp.FieldByName('SALDOANT').AsFloat +
                                                       cdsTemp.FieldByName('VALORE').AsFloat - cdsTemp.FieldByName('VALORS').AsFloat;
          cdsTemp.FieldByName('SALDOEST').AsFloat   := valor_SaldoEst;
          cdsTemp.FieldByName('DIF_CMU').AsFloat    := cdsTemp.FieldByName('SALDOCAL').AsFloat -
                                                       cdsTemp.FieldByName('SALDOEST').AsFloat;

          cdsTemp.Post;

          valorE := 0;
          valorS := 0;
          valor_SaldoAnt := 0;
          valor_SaldoEst := 0;

      end;

    end;

//-------------------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------------------

  end else begin

    ShowMessage('Nenhum registro encontrado!');
    Exit;

  end;

  cdsTemp.Filtered:=false;
  cdsTemp.Filter:='';
  TCurrencyField(cdsTemp.FieldByName('SALDOANT')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('VALORE')).DisplayFormat   := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('VALORS')).DisplayFormat   := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('SALDOCAL')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('SALDOEST')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('DIF_CMU')).DisplayFormat  := '#,##0.00';

  inherited;
  gravaIni(Self.Name + intToStr(UsuarioCodigo), edCompetencia.Name, FormatDateTime('01/mm/yyyy', edCompetencia.Date));


end;

procedure TFRelResumoContabil.FormCreate(Sender: TObject);
begin
  inherited;


  cdsTemp := TClientDataSet.Create(Self);

  with cdsTemp.FieldDefs do
  begin

    Add('CONTA1', ftString, 30);
    Add('CONTA2', ftString, 30);
    Add('CONTADESC', ftString, 30);
    Add('SALDOANT', ftFloat, 0);
    Add('VALORE', ftFloat, 0);
    Add('VALORS', ftFloat, 0);
    Add('SALDOCAL', ftFloat, 0);
    Add('SALDOEST', ftFloat, 0);
    Add('DIF_CMU', ftFloat, 0);

  end;

  cdsTemp.CreateDataSet;
  cdsTemp.IndexFieldNames := 'CONTA1;CONTA2';
  cdsTemp.Open;

  TCurrencyField(cdsTemp.FieldByName('SALDOANT')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('VALORE')).DisplayFormat   := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('VALORS')).DisplayFormat   := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('SALDOCAL')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('SALDOEST')).DisplayFormat := '#,##0.00';
  TCurrencyField(cdsTemp.FieldByName('DIF_CMU')).DisplayFormat  := '#,##0.00';

  DSPesquisa.DataSet := cdsTemp;

end;

procedure TFRelResumoContabil.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;

  cdsTemp.Free;
  FRelResumoContabil.Release;
  FRelResumoContabil := Nil;


end;

procedure TFRelResumoContabil.btnExecutarClick(Sender: TObject);
begin
  RLMemo.Lines.Clear;
  RLMemo.Lines.Add('Competencia: ' + FormatDateTime('mm/yyyy', edCompetencia.DateTime));
  inherited;

end;

procedure TFRelResumoContabil.FormShow(Sender: TObject);
begin
  inherited;
  if leIni(Self.Name + intToStr(UsuarioCodigo), edCompetencia.Name) <> '' then
    edCompetencia.Date := strToDate(leIni(Self.Name + intToStr(UsuarioCodigo), edCompetencia.Name));

end;

procedure TFRelResumoContabil.RLDBText9BeforePrint(Sender: TObject;
  var Text: String; var PrintIt: Boolean);
begin
  inherited;
  //Text := Text + '-' + cdsTemp.FieldByName('CONTADESC').AsString;
end;

procedure TFRelResumoContabil.DBLCBLocalKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = 46 then
  begin
   TDBLookupComboBox(Sender).KeyValue:=null;
  end;

end;

procedure TFRelResumoContabil.Carregar_CDS;
const SQL_SALDO_ESTOQUE =
          ' SELECT '#10+
          '  CCON.PLANOCONT_CODIGOCONTABIL AS CC_CONSUMO,'#10+
          '  CEST.PLANOCONT_CODIGOCONTABIL AS CC_ESTOQUE,'#10+
          '  CEST.PLANOCONT_DESCRICAO AS CC_ESTOQUE_DESC '#10+
          ' FROM saldoestoque '#10+
          '  INNER JOIN PRODUTO ON (saldoestoque.sal_est_produto = PRODUTO.PROD_CODIGO) '#10+
          '  INNER JOIN CLASSIFICACAOPRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO) '#10+
          '  INNER JOIN PLANOCONTABILIDADE CCON ON (CCON.PLANOCONT_CODIGO =  CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_REC) '#10+
          '  INNER JOIN PLANOCONTABILIDADE CEST ON (CEST.PLANOCONT_CODIGO =  CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_EST) '#10+
          ' where saldoestoque.sal_est_quantidadedisp > 0 '#10+
          ' ORDER BY '#10+
          '  CCON.PLANOCONT_CODIGOCONTABIL, '#10+
          '  CEST.PLANOCONT_CODIGOCONTABIL';

const SQL_SALDO_LOCAL =
          ' SELECT '#10+
          '  CCON.PLANOCONT_CODIGOCONTABIL AS CC_CONSUMO,'#10+
          '  CEST.PLANOCONT_CODIGOCONTABIL AS CC_ESTOQUE,'#10+
          '  CEST.PLANOCONT_DESCRICAO AS CC_ESTOQUE_DESC '#10+
          ' FROM saldolocal '#10+
          '  INNER JOIN PRODUTO ON (saldolocal.sal_loc_produto = PRODUTO.PROD_CODIGO) '#10+
          '  INNER JOIN CLASSIFICACAOPRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO) '#10+
          '  INNER JOIN PLANOCONTABILIDADE CCON ON (CCON.PLANOCONT_CODIGO =  CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_REC) '#10+
          '  INNER JOIN PLANOCONTABILIDADE CEST ON (CEST.PLANOCONT_CODIGO =  CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_EST) '#10+
          ' where saldoestoque.sal_est_quantidadedisp > 0 '#10+
          ' ORDER BY '#10+
          '  CCON.PLANOCONT_CODIGOCONTABIL, '#10+
          '  CEST.PLANOCONT_CODIGOCONTABIL';

  ctConsultaSaldo =
    'SELECT'#10+
    '  SUM(resumosaldoestoque.resu_custo_medio_unitario * resumosaldoestoque.resu_saldo)'#10+
    'FROM'#10+
    '  RESUMOSALDOESTOQUE'#10+
    '  INNER JOIN PRODUTO ON (RESUMOSALDOESTOQUE.RESU_PRODUTO  = PRODUTO.PROD_CODIGO)'#10+
    '  LEFT JOIN CLASSIFICACAOPRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CCON ON (CCON.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_REC)'#10+
    '  LEFT JOIN PLANOCONTABILIDADE CEST ON (CEST.PLANOCONT_CODIGO = CLASSIFICACAOPRODUTO.CLASS_PROD_CONTACONTABIL_EST)'#10+
    'WHERE'#10+
    '  (RESU_MES_FECHAMENTO   = %s) AND'#10+
    '  (RESU_ANO_FECHAMENTO   = %s) AND'#10+
    '  ((CCON.PLANOCONT_CODIGOCONTABIL = %s)AND'#10+
    '  (CEST.PLANOCONT_CODIGOCONTABIL = %s)) %s';

var
  nf, serie, conta1, conta2, hist1, hist2 : variant;
  ProxConta1, ProxConta2 : variant;
  valorE, valorS, valor_SaldoAnt, valor_saldoEst  : real;
  Arq : TextFile;
  chave, chave2,LOCAL_ESTOQUE : string;
  i, contMes, Y, M, D, Y_ant, M_ant : integer;

begin
  M := StrToInt(FormatDateTime('mm',   edCompetencia.DateTime));
  Y := StrToInt(FormatDateTime('yyyy', edCompetencia.DateTime));
  D := MonthDays[IsLeapYear(Y), M];// Ultimo Dia

  M_ant := M -1;
  Y_ant := Y;

  if M_ant < 1 then
  begin
    M_ant := 12;
    Y_ant := Y -1;
  end;

  valorE := 0;
  valorS := 0;
  valor_SaldoAnt := 0;
  valor_saldoEst := 0;

  if Usando_Query_Pesquisa(SQL_SALDO_ESTOQUE) then
  begin

    Query_Pesquisa.First;

    while not(Query_Pesquisa.Eof) do
    begin

      conta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
      conta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);
      chave  := conta1 + conta2;

      Query_Pesquisa.Next;
      ProxConta1 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_CONSUMO').AsString, 'E', 20);
      ProxConta2 := AlinhaTexto2(Query_Pesquisa.FieldByName('CC_ESTOQUE').AsString, 'E', 20);

      LOCAL_ESTOQUE:='AND (RESU_GERAL_LOCAL = 0 )';

     if DBLCBLocal.Text <> '' then
        LOCAL_ESTOQUE:= 'AND (RESU_GERAL_LOCAL = ' + VarToStr(DBLCBLocal.KeyValue) + ') ';

      chave2 := ProxConta1 + ProxConta2;

      if  Query_Pesquisa.eof then
       chave2:='666';

      if chave <> chave2 then
      begin

          if Usando_Query_Pesquisa2(Format(ctConsultaSaldo, [QuotedStr(FormatFloat('00',M_ant)),
                                                             QuotedStr(IntToStr(Y_ant)),
                                                             conta1,
                                                             conta2,LOCAL_ESTOQUE])) then
            valor_SaldoAnt := Query_Pesquisa2.Fields[0].AsFloat;

          if Usando_Query_Pesquisa2(Format(ctConsultaSaldo, [QuotedStr(FormatFloat('00',M)),
                                                             QuotedStr(IntToStr(Y)),
                                                             conta1,
                                                             conta2,LOCAL_ESTOQUE])) then
            valor_SaldoEst := Query_Pesquisa2.Fields[0].AsFloat;

          cdsTemp.Insert;

          cdsTemp.FieldByName('CONTA1').AsString    := conta1;
          cdsTemp.FieldByName('CONTA2').AsString    := conta2;
          cdsTemp.FieldByName('CONTADESC').AsString := Query_Pesquisa.FieldByName('CC_ESTOQUE_DESC').AsString;
          cdsTemp.FieldByName('SALDOANT').AsFloat   := valor_SaldoAnt;
          cdsTemp.FieldByName('VALORS').AsFloat     := valorS;
          cdsTemp.FieldByName('VALORE').AsFloat     := valorE;
          cdsTemp.FieldByName('SALDOCAL').AsFloat   := cdsTemp.FieldByName('SALDOANT').AsFloat +
                                                       cdsTemp.FieldByName('VALORE').AsFloat - cdsTemp.FieldByName('VALORS').AsFloat;
          cdsTemp.FieldByName('SALDOEST').AsFloat   := valor_SaldoEst;
          cdsTemp.FieldByName('DIF_CMU').AsFloat    := cdsTemp.FieldByName('SALDOCAL').AsFloat -
                                                       cdsTemp.FieldByName('SALDOEST').AsFloat;

          cdsTemp.Post;

          valorE := 0;
          valorS := 0;
          valor_SaldoAnt := 0;
          valor_SaldoEst := 0;
      end;
    end;

  end else begin
    ShowMessage('Nenhum registro encontrado!');
    Exit;
  end;


end;

procedure TFRelResumoContabil.posicionar_cds(conta1, conta2: string);
begin

cdsTemp.Close;
cdsTemp.Filtered:=false;
cdsTemp.Filter:='';

cdsTemp.Filter:= 'CONTA1 = '+CONTA1+' AND CONTA2 = '+conta2;
cdsTemp.Filtered:=true;
cdsTemp.Open;
cdsTemp.Edit;

end;

end.
